package ec.edu.ups.cidi.siia.plamdep.moduloweb.jms;



import java.io.Serializable;

import javax.ejb.MessageDriven;
import javax.inject.Inject;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.ejb.ActivationConfigProperty;

import ec.edu.ups.cidi.siia.plamdep.moduloweb.dao.AnalisisDAO;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.modeloBD.Analisis;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.modeloWS.SolicitudAnalisis;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.servicio.ProcesamientoPeticiones;

@MessageDriven(mappedName="plamdepQueue", 
activationConfig =  
	{
	@ActivationConfigProperty(propertyName = "destination", 
	 propertyValue = "queue/plamdepCola"),
	@ActivationConfigProperty(propertyName = "acknowledgeMode",
	 propertyValue = "Auto-acknowledge"),
 @ActivationConfigProperty(propertyName = "destinationType",
  propertyValue = "javax.jms.Queue")
	})


public class AnalisisListener implements MessageListener, Serializable {

	@Inject ProcesamientoPeticiones process;
	@Inject AnalisisDAO dao;
	
	public AnalisisListener() {
	    System.out.println("listener");

	}

	
	public void onMessage(Message mensaje) 
	{
		try
		{
			System.out.println("On Message: recibe un nuevo analisis");
			
			ObjectMessage obmensaje=(ObjectMessage)mensaje;
			SolicitudAnalisisJMS sol=(SolicitudAnalisisJMS) obmensaje.getObject();
			
			Analisis analisis=new Analisis();
			analisis.setBusquedaLocal(sol.isBusquedaLocal());
			analisis.setBusquedaWeb(sol.isBusquedaWeb());
			analisis.setPeticion(sol.getCodSolicitud());
			analisis.setEstado("En cola");
			analisis.setCodigoAlgoritmoComparacion(sol.getCodigoAlgoritmoComparacion());
			analisis.setCodigoAlgoritmoExtraccion(sol.getCodigoAlgoritmoExtraccion());
			analisis.setRutaArchivoSospechoso(sol.getRutaArchivoSospechoso());
			
			try{
			dao.create(analisis);
			System.out.println("Analisis Guardado"+analisis.getPeticion());
			
			}catch(Exception e)
			{
				System.out.println("Error al guardar el analisis");
				return;
			}
			
			process.analizar(sol);
					
		}catch(Exception e){
			
			
			
		}
		
	}
	

}
